/*******************************************************************************
  * 文件：Heartbeat.c
  * 作者：zyz
  * 版本：v1.0.0
  * 日期：2017-05-16
  * 说明：心跳
*******************************************************************************/
/* 头文件 *********************************************************************/
#include "Heartbeat.h"
#include "Hardware.h"
#include "OS_Kernel.h"
#include "JumpFunction.h"

/* 宏定义 *********************************************************************/
/* 类型定义 *******************************************************************/
/* 变量定义 *******************************************************************/
static Timer_ts sHeartbeatTimer;    // 心跳定时器

/* 函数声明 *******************************************************************/
static void Heartbeat_TimerCallback(void);    // 定时器回调函数

/* 函数定义 *******************************************************************/
/*******************************************************************************
  * 函数名：Heartbeat_Init
  * 功  能：初始化
  * 参  数：无
  * 返回值：无
  * 说  明：无
*******************************************************************************/
void Heartbeat_Init(void)
{
	OS_TimerStart(&sHeartbeatTimer, 300, Heartbeat_TimerCallback);
}

/*******************************************************************************
  * 函数名：Heartbeat_TimerCallback
  * 功  能：定时器回调函数
  * 参  数：无
  * 返回值：无
  * 说  明：无
*******************************************************************************/
static void Heartbeat_TimerCallback(void)
{
    // 超过30s返回应用程序
    if(OS_TimerGetExpiredTimes(&sHeartbeatTimer) > 100)
    {
        JumpToApplication();
    }
    // 未超过30s心跳指示灯闪烁
    else
    {
        Hardware_ToggleHeartbeatLed();
    }
}

/*******************************************************************************
  * 函数名：Heartbeat_Active
  * 功  能：激活心跳
  * 参  数：无
  * 返回值：无
  * 说  明：无
*******************************************************************************/
void Heartbeat_Active(void)
{
    // 清除过期次数
    OS_TimerClearExpiredTimes(&sHeartbeatTimer);
}

/***************************** 文件结束 ***************************************/
